Founder & CEO @ FIM Labs ยท MS AI ยท Enterprise AI Agents & Document Intelligence ยท China ร Global
Building cognitive architectures that give LLMs better memory than mine ๐ง
class TaoAn:
def __init__(self):
self.location = "Singapore ร Beijing"
self.company = "FIM Labs"
self.role = "Founder & CEO"
self.education = "MS in Artificial Intelligence, Hawaii Pacific University (2026)"
self.interests = ["RAG", "LLM Memory Architectures", "Knowledge Graphs", "Agentic Workflows"]
self.current_focus = "Enterprise AI agents & document intelligence across the China ร Global boundary"
self.belief = "Most 'AI agents' should be workflows โ fix the plumbing before buying a bigger pump."
def say_hi(self):
print("Thanks for dropping by! Let's build something cool together.")
me = TaoAn()
me.say_hi()Product
- fim-ai/fim-one โ open-source agent platform for Global ร China enterprises (self-hosted, any LLM). Day-job / company product I build and ship.
Upstream (external)
- openai/openai-agents-python
โ two bugs in how a paused run is restored from serialized state:
- #5142 (merged,
ad93f54): a nested agent-as-tool run serializes its agent references relative to the tool's own agent, but resumption resolved them against the parent, so with two same-named agents a pending approval silently never applied. Root cause, 7-line fix, 218 lines of regression tests. - #3749: a pending nested approval could bind to the wrong tool call once an earlier entry was filtered out. The maintainer re-landed it at source level as #3753 with
Co-authored-by: Tao An.
- #5142 (merged,
- eigenpal/docx-editor
โ CJK typography in the OOXML layout engine, ~2k lines merged: resolved the
eastAsiafont slot so CJK runs measure and paint in their own face (#539), and added kinsoku line breaking between ideographs (#540). - acmesh-official/acme.sh
โ #7278 (merged,
6467ca9):_setopt()and_clear_conf()redirected new content straight into the conf file, so a write that failed on a full disk truncated it to 0 bytes while_save_confstill returned 0, and the certificate could no longer renew (#7247). Every conf write now goes through a temp copy in the same directory that is verified and then renamed over the original; symlinked or bind-mounted confs keep the in-place write. Checked under dash, bash, zsh and busybox ash, and on an ext4 loop mount filled to 0 free blocks. - docling-project/docling
โ #4336 (merged,
2682193): the DOCX backend treated any list level with an East Asianw:numFmtas a bullet list, so็ฌฌ%1ๆก-style regulation numbering was dropped on conversion (#4335). Added nine formats (chineseCounting,chineseLegalSimplified,japaneseCounting,decimalEnclosedCircleand others) following ECMA-376 ยง17.18.59, with the cases the standard leaves open settled against Microsoft Word's own output: the converters match 525 Word-rendered markers except one documented glyph choice, backed by 176 parametrized boundary tests and an end-to-end DOCX test. - docling-project/docling-core โ the follow-up the docling reviewers asked for: #799 (merged,
25ade75): the Markdown serializer'sAUTOmarker mode kept an original list marker only if it matched[a-zA-Z0-9], so the CJK markers docling now emits (็ฌฌไนๆก, ๏ผไธ๏ผ, โ ) were replaced by-(#798). The check now accepts any Unicode letter or digit, while bullet glyphs are still dropped; full suite 768 passed with ground-truth files unchanged.
Original research / tools
- cognitive-workspace โ active memory / functional infinite-context architecture for LLMs.
- nano-spec โ lightweight task-spec format for AI-assisted development.
- cog-canvas โ training-free long-term memory for LLM conversations.




