work-ally 0.2.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +110 -0
- package/DASHBOARD.md +160 -0
- package/PRODUCT.md +113 -0
- package/README.md +403 -0
- package/ally.sh +171 -0
- package/bridge/src/approval-rules.ts +360 -0
- package/bridge/src/channel-delivery.ts +207 -0
- package/bridge/src/channel-types.ts +22 -0
- package/bridge/src/channels/fake/adapter.ts +31 -0
- package/bridge/src/channels/feishu/adapter.ts +411 -0
- package/bridge/src/channels/feishu/approvals.ts +6 -0
- package/bridge/src/channels/feishu/formatter.ts +276 -0
- package/bridge/src/channels/feishu/normalize.ts +368 -0
- package/bridge/src/codex-config.ts +52 -0
- package/bridge/src/config.ts +240 -0
- package/bridge/src/fake-runtime-client.ts +505 -0
- package/bridge/src/handoff-service.ts +494 -0
- package/bridge/src/logger.ts +194 -0
- package/bridge/src/memory-digest.ts +186 -0
- package/bridge/src/receiver-approval-autonomy.ts +158 -0
- package/bridge/src/receiver-control-core.ts +140 -0
- package/bridge/src/receiver-control-work-session.ts +218 -0
- package/bridge/src/receiver-control.ts +83 -0
- package/bridge/src/receiver-delivery.ts +136 -0
- package/bridge/src/receiver-helpers.ts +96 -0
- package/bridge/src/receiver-human-gate.ts +333 -0
- package/bridge/src/receiver-inbound-preflight.ts +162 -0
- package/bridge/src/receiver-recovery.ts +236 -0
- package/bridge/src/receiver-runtime-callbacks.ts +367 -0
- package/bridge/src/receiver-runtime-policy.ts +132 -0
- package/bridge/src/receiver-runtime-state.ts +124 -0
- package/bridge/src/receiver-support-actions.ts +189 -0
- package/bridge/src/receiver-thread-start.ts +57 -0
- package/bridge/src/receiver-turn-coordination.ts +94 -0
- package/bridge/src/receiver-turn-execution.ts +257 -0
- package/bridge/src/receiver-turn-failure.ts +143 -0
- package/bridge/src/receiver-turn-result.ts +185 -0
- package/bridge/src/receiver-turn-steer.ts +70 -0
- package/bridge/src/receiver-work-session.ts +76 -0
- package/bridge/src/receiver.ts +329 -0
- package/bridge/src/router.ts +62 -0
- package/bridge/src/runtime-client-agent-messages.ts +150 -0
- package/bridge/src/runtime-client-message-dispatch.ts +176 -0
- package/bridge/src/runtime-client-protocol.ts +411 -0
- package/bridge/src/runtime-client-request-ops.ts +56 -0
- package/bridge/src/runtime-client-run-turn.ts +158 -0
- package/bridge/src/runtime-client-thread-ops.ts +270 -0
- package/bridge/src/runtime-client-transport.ts +309 -0
- package/bridge/src/runtime-client-turn-poll.ts +224 -0
- package/bridge/src/runtime-client-turn-read.ts +185 -0
- package/bridge/src/runtime-client-turn-state.ts +105 -0
- package/bridge/src/runtime-client.ts +344 -0
- package/bridge/src/runtime-user-input.ts +403 -0
- package/bridge/src/scheduler.ts +239 -0
- package/bridge/src/server-handoff-command.ts +364 -0
- package/bridge/src/server-main.ts +80 -0
- package/bridge/src/server-routine-command.ts +60 -0
- package/bridge/src/server-routine-execution.ts +222 -0
- package/bridge/src/server-runtime-app-support.ts +107 -0
- package/bridge/src/server-runtime-app.ts +238 -0
- package/bridge/src/server-thread-sync-command.ts +63 -0
- package/bridge/src/server.ts +17 -0
- package/bridge/src/session-store-delivery.ts +220 -0
- package/bridge/src/session-store-human-gate.ts +380 -0
- package/bridge/src/session-store-inbound-acceptance.ts +66 -0
- package/bridge/src/session-store-meta.ts +134 -0
- package/bridge/src/session-store-turn-ledger.ts +272 -0
- package/bridge/src/session-store.ts +380 -0
- package/bridge/src/system-notify.ts +220 -0
- package/bridge/src/thread-sync.ts +200 -0
- package/bridge/src/translator.ts +494 -0
- package/bridge/src/types.ts +289 -0
- package/bridge/src/utils.ts +104 -0
- package/bridge/src/work-session-store.ts +471 -0
- package/docs/.gitkeep +0 -0
- package/docs/architecture/codex-feishu-bridge-proposal.md +2742 -0
- package/docs/completed/FEATURE-feishu-markdown-and-reply-support.md +327 -0
- package/docs/completed/README.md +21 -0
- package/docs/completed/SPEC-approval-autonomy-and-safe-defaults.md +205 -0
- package/docs/completed/SPEC-approval-batch-and-strict-reply-shortcuts.md +153 -0
- package/docs/completed/SPEC-conversation-noise-reduction-and-busy-input-gate.md +538 -0
- package/docs/completed/SPEC-engineering-sop-skillization.md +190 -0
- package/docs/completed/SPEC-faithful-bridge-core-thinning-v2.md +376 -0
- package/docs/completed/SPEC-faithful-bridge-core-thinning.md +1071 -0
- package/docs/completed/SPEC-group-chat-sender-identity.md +301 -0
- package/docs/completed/SPEC-middleware-exception-visibility.md +227 -0
- package/docs/completed/SPEC-nightly-memory-digest-visibility.md +121 -0
- package/docs/completed/SPEC-project-group-chat-human-centered-conversation-mapping.md +326 -0
- package/docs/completed/SPEC-remove-cli-persona-bootstrap.md +201 -0
- package/docs/developer-workflow.md +49 -0
- package/docs/implementation/SPEC-codex-same-machine-session-handoff-implementation.md +239 -0
- package/docs/implementation/test-coverage-map.md +363 -0
- package/docs/implementation/work-ally-implementation-guide.md +790 -0
- package/docs/issues/README.md +10 -0
- package/docs/issues/pending/ANALYSIS-ally-premature-recovery-notice-and-task-state-semantics-2026-03-18.md +295 -0
- package/docs/issues/resolved/ANALYSIS-approval-waiting-visible-but-approval-artifact-missing-2026-03-16.md +466 -0
- package/docs/issues/resolved/ANALYSIS-blocking-state-visible-without-user-actionable-artifact-2026-03-16.md +261 -0
- package/docs/issues/resolved/ANALYSIS-codex-app-server-transport-disconnect-semantics-2026-03-14.md +606 -0
- package/docs/issues/resolved/ANALYSIS-premature-terminalization-on-fresh-thread-poll-and-object-error-leak-2026-03-16.md +348 -0
- package/docs/issues/resolved/ANALYSIS-runtime-turn-delivery-and-recovery-2026-03-14.md +603 -0
- package/docs/issues/resolved/ANALYSIS-self-test-gap-approval-waiting-visible-but-approval-artifact-missing-2026-03-16.md +166 -0
- package/docs/issues/resolved/ANALYSIS-self-test-gap-blocking-state-visible-without-user-actionable-artifact-2026-03-16.md +186 -0
- package/docs/issues/resolved/ANALYSIS-self-test-gap-premature-terminalization-on-fresh-thread-poll-and-object-error-leak-2026-03-16.md +166 -0
- package/docs/issues/resolved/REPORT-ally-runtime-turn-delivery-3b42fb8-2026-03-15.md +373 -0
- package/docs/manual-acceptance.md +127 -0
- package/docs/ops-runbook.md +44 -0
- package/docs/planning/FEATURE-memory-system.md +748 -0
- package/docs/planning/SPEC-active-turn-steer-and-context-compaction-visibility.md +269 -0
- package/docs/planning/SPEC-approval-rules-inheritance-and-local-validation-lane.md +450 -0
- package/docs/planning/SPEC-assistant-persona-bootstrap.md +199 -0
- package/docs/planning/SPEC-assistant-rename.md +610 -0
- package/docs/planning/SPEC-bridge-app-server-protocol-alignment.md +667 -0
- package/docs/planning/SPEC-claude-runtime-host-for-work-ally.md +434 -0
- package/docs/planning/SPEC-cli-feishu-codex-session-unification.md +236 -0
- package/docs/planning/SPEC-codex-same-machine-session-handoff.md +873 -0
- package/docs/planning/SPEC-feishu-reaction-shortcuts.md +282 -0
- package/docs/planning/SPEC-local-stable-release-boundary.md +166 -0
- package/docs/planning/SPEC-managed-thread-entry-and-surface-mobility.md +862 -0
- package/docs/planning/SPEC-minimal-bridge-semantics-and-user-visible-surface.md +362 -0
- package/docs/planning/SPEC-npm-alpha-distribution-and-install-first-release.md +222 -0
- package/docs/planning/SPEC-remove-websocket-runtime-transport.md +364 -0
- package/docs/planning/SPEC-runtime-abstraction-phase-1.md +424 -0
- package/docs/planning/SPEC-runtime-connection-and-turn-recovery-semantics.md +274 -0
- package/docs/planning/SPEC-session-presence-and-state-visibility.md +397 -0
- package/docs/planning/SPEC-skill-first-capability-packaging.md +338 -0
- package/docs/planning/SPEC-stable-archive-contract.md +456 -0
- package/docs/planning/SPEC-supervised-start-boundary.md +127 -0
- package/docs/planning/SPEC-user-barrier-reduction-and-activation.md +832 -0
- package/docs/planning/ally-next.md +1278 -0
- package/docs/planning/assistant-workbench-spec.md +725 -0
- package/docs/planning/product-workbench.md +283 -0
- package/docs/product-onboarding.md +227 -0
- package/docs/product-spec-standard.md +528 -0
- package/docs/troubleshooting.md +45 -0
- package/docs/user-quickstart.md +46 -0
- package/internal/dispatch.sh +95 -0
- package/internal/lib/common.sh +1450 -0
- package/internal/modules/assistant/manage.sh +1312 -0
- package/internal/modules/bootstrap/setup.sh +144 -0
- package/internal/modules/config/init-env.sh +10 -0
- package/internal/modules/global/manage.sh +154 -0
- package/internal/modules/handoff/manage.sh +54 -0
- package/internal/modules/mcp/manage.sh +83 -0
- package/internal/modules/ops/logs.sh +76 -0
- package/internal/modules/routines/manage.sh +55 -0
- package/internal/modules/runtime/assistant-autosave.sh +26 -0
- package/internal/modules/runtime/restart.sh +6 -0
- package/internal/modules/runtime/start.sh +283 -0
- package/internal/modules/runtime/status.sh +194 -0
- package/internal/modules/runtime/stop.sh +55 -0
- package/internal/modules/runtime/supervisor.sh +216 -0
- package/internal/modules/runtime/update.sh +26 -0
- package/package.json +41 -0
- package/runtime/config/.gitkeep +0 -0
- package/runtime/host/.gitkeep +0 -0
- package/runtime/host/healthcheck-codex-app-server.ts +22 -0
- package/runtime/host/ping-pong-codex-app-server.ts +66 -0
- package/runtime/host/probe-codex-app-server.ts +115 -0
- package/skills/archive-reader/SKILL.md +9 -0
- package/skills/feishu-production-debug/SKILL.md +37 -0
- package/skills/feishu-production-debug/references/feishu-debug-order.md +49 -0
- package/skills/feishu-production-debug/references/platform-permission-baseline.md +23 -0
- package/skills/issue-to-spec-triage/SKILL.md +44 -0
- package/skills/issue-to-spec-triage/references/triage-rules.md +66 -0
- package/skills/memory-digest/SKILL.md +9 -0
- package/skills/post-implementation-closure/SKILL.md +39 -0
- package/skills/post-implementation-closure/references/closure-checklist.md +45 -0
- package/skills/post-implementation-closure/references/doc-drift-map.md +49 -0
- package/skills/product-spec/SKILL.md +244 -0
- package/templates/env.example +5 -0
- package/templates/routines/nightly-memory-digest.yaml +10 -0
- package/templates/workspace/AGENTS.md +26 -0
package/AGENTS.md
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
## 文件定位
|
|
4
|
+
|
|
5
|
+
这个文件服务于 `work-ally` 产品线的工程维护者、未来的产品经理与协作者,不是给普通终端用户看的使用说明。
|
|
6
|
+
|
|
7
|
+
`README.md` 是给工程维护者看的产品总览与入口地图;`DASHBOARD.md` 是产品负责人 / 项目负责人的轻量工作台;`docs/user-quickstart.md` 面向当前正式 CLI 用户;`docs/user-quickstart-desktop.md` 面向桌面端内测;本文件约束产品研发与维护口径。
|
|
8
|
+
|
|
9
|
+
## 产品定位
|
|
10
|
+
|
|
11
|
+
`work-ally` 是一个独立产品仓库:把**项目工作现场**连接到**命名 assistant 办公桌**与**官方 Codex runtime**。
|
|
12
|
+
|
|
13
|
+
核心边界:**不要再造一个脑子。**
|
|
14
|
+
|
|
15
|
+
- 项目目录是工作现场,不是 assistant 的家。
|
|
16
|
+
- assistant 的身份、人格、记忆、对话资产属于 assistant desk。
|
|
17
|
+
- 项目规则来自项目自身的 `AGENTS.md`。
|
|
18
|
+
- `work-ally` 负责编排、桥接、生命周期与可观测性。
|
|
19
|
+
|
|
20
|
+
## 稳定产品原则
|
|
21
|
+
|
|
22
|
+
- 一个运行中的 ally 进程,对应一个 assistant desk。
|
|
23
|
+
- 中间层默认遵守 KISS:保持小而美,只补项目协作真正存在的缝隙。
|
|
24
|
+
- 官方 Codex / App Server 已稳定提供的能力默认直接复用,不在中间层重做一套。
|
|
25
|
+
- 不为了"看起来完整"而把中间层做厚;尤其避免重复发明上下文压缩、第二套会话脑或镜像状态机。
|
|
26
|
+
- 默认假设:一个 assistant 长期专注一个项目,不对外鼓励一助理多项目轮转。
|
|
27
|
+
- 对用户暴露的配置越少越好;能内部拍板的不要外抛。
|
|
28
|
+
- 记忆系统、assistant desk 结构、审批与桥接行为优先保持可读、可审计、可版本化。
|
|
29
|
+
- 原材料与用户长期资产优先使用文件系统表达,不引入额外黑盒存储。
|
|
30
|
+
- 新增 capability 默认先过 `skill-first` 判断:能作为 Skill 包成立的,不优先长进 `bridge/` 或 `internal/`。
|
|
31
|
+
- `work-ally` 核心只守桥接合同;机制性 workflow 优先放进 `skills/`,用 `SKILL.md + scripts/references/assets` 表达。
|
|
32
|
+
- 基础纪律、长期产品边界、表达与协作铁律继续留在规则层,不要误塞进 Skill。
|
|
33
|
+
- Skill 只承接阶段性、按需触发、可复用的 workflow;如果一条规则必须始终生效,它就不属于 Skill。
|
|
34
|
+
|
|
35
|
+
## 用户体验约束
|
|
36
|
+
|
|
37
|
+
- 唯一用户入口是 `./ally.sh <command>`。
|
|
38
|
+
- 不新增平行的用户入口脚本,除非明确决策变更。
|
|
39
|
+
- 默认体验优先于“可配置性炫技”。
|
|
40
|
+
- README 要能让后续维护者快速找到入口模块、状态目录、验证路径与相关文档,不记录迁移史。
|
|
41
|
+
- `docs/user-quickstart.md` 必须能支撑当前正式 CLI 路径从零走通完整流程。
|
|
42
|
+
|
|
43
|
+
## 仓库结构约束
|
|
44
|
+
|
|
45
|
+
- `ally.sh`:用户入口 facade,仅做薄转发。
|
|
46
|
+
- `internal/`:本地 bootstrap、desk 管理、配置生成、生命周期控制。
|
|
47
|
+
- `bridge/`:bridge 核心、会话流转、审批、消息翻译、渠道适配。
|
|
48
|
+
- `runtime/`:只包装官方 Codex runtime host,不在这里堆产品逻辑。
|
|
49
|
+
- `skills/`:产品级 Skill 包与机制性 workflow;不承载主身份,只承载按需能力。
|
|
50
|
+
- `docs/completed/`:已完成专题、已落地 spec、已收口 feature 账本。
|
|
51
|
+
- `docs/planning/`:产品设计、feature spec、长期规划与待确认专题。
|
|
52
|
+
- `tests/`:shell、unit、integration 验证。
|
|
53
|
+
|
|
54
|
+
## 研发纪律
|
|
55
|
+
|
|
56
|
+
- 优先修根因,不打兼容补丁,除非明确要求。
|
|
57
|
+
- 方向变了就顺手清理废弃路径、旧文案和无效结构,保持架构干净。
|
|
58
|
+
- 当命令语义、desk 结构、记忆机制、审批机制、桥接行为变化时,同步更新 README 与相关文档。
|
|
59
|
+
- 新 feature 先补最小可验证测试,再扩大验证面。
|
|
60
|
+
- 只要改动触及 `resume / restart / continuity / recovery`,至少补一条“重启后再发普通消息”的回归;不能只验证进程重启成功、`/codex`、`/new` 或其他控制命令表面正常。
|
|
61
|
+
- runtime fallback / recovery 类问题做单测时,必须覆盖真实错误对象形态;不要只用理想化 mock 裸对象,避免测试绿而真实运行失败。
|
|
62
|
+
- 面向用户的文案要短、准、直接,避免堆工程内部概念。
|
|
63
|
+
- 实现代码文件超过 `300` 行时,必须先反思是否应拆分模块,而不是继续往里堆逻辑。
|
|
64
|
+
- 新增或重构后的实现代码文件,原则上不应超过 `600` 行;若必须超过,需能在 spec 或实现说明中说清理由。
|
|
65
|
+
- 达到 `1000+` 行的实现代码文件视为明确重构信号,不是常态;`1700 ~ 2000` 行级别文件不得继续膨胀,必须优先拆分收口。
|
|
66
|
+
- 模块拆分应按职责和边界进行,不做单纯按行数切文件的机械拆分。
|
|
67
|
+
|
|
68
|
+
## Spec 纪律
|
|
69
|
+
|
|
70
|
+
- 只要是非平凡的产品需求、行为变更、架构调整或跨模块 feature,必须先给出一份可执行 spec,再进入实现。
|
|
71
|
+
- 在本仓库里,`非平凡需求` 指满足任一条件的工作:会改变产品语义、默认行为或用户路径;会引入新对象、新状态、新流程或新命令;会跨模块、跨角色、跨系统边界;会影响长期维护口径;做错后返工成本明显高。
|
|
72
|
+
- 这份 spec 的团队标准以 [docs/product-spec-standard.md](/Users/allenfeng/Development/Repositories/work-ally/docs/product-spec-standard.md) 为准。
|
|
73
|
+
- spec 的最低要求不是“写得长”,而是让没参与前期讨论的技术人员读完后也能正确开工,而不是还要猜“为什么做、做到哪里、什么算完成”。
|
|
74
|
+
- spec 至少要讲清:是什么、为什么、范围、用户路径、机制设计、验收标准,以及风险 / 假设 / 待决问题。
|
|
75
|
+
- 产品要求如果只停留在口头想法、模糊方向或一句话诉求,默认不视为可开工输入;应先沉淀成项目级 spec。
|
|
76
|
+
- 小修小补、纯文案调整、低风险 bugfix 可不单独立 spec;但只要改动会影响产品语义、默认行为、模块边界或长期维护口径,就应补 spec。
|
|
77
|
+
- spec 属于项目资产,应沉淀在仓库内;未落地或待确认的通常放在 `docs/planning/`,已收口专题应进入 `docs/completed/`,若已进入明确实施阶段,可在 `docs/implementation/` 补充实施拆解与阶段 DoD。
|
|
78
|
+
- 工程实现应优先对齐 spec;若实现过程中发现 spec 不成立或边界变化,不要静默偏航,应先回写 spec 再继续推进。
|
|
79
|
+
- 新增 capability 的 spec,默认要显式回答一次:为什么它不是 Skill,或者为什么它应被定义为 `Core / Hybrid / Skill` 中的哪一类。
|
|
80
|
+
- 当任务是起草、补齐、评审或自评分产品 spec 时,优先使用 [skills/product-spec/SKILL.md](/Users/allenfeng/Development/Repositories/work-ally/skills/product-spec/SKILL.md)。
|
|
81
|
+
|
|
82
|
+
## 记忆与办公桌边界
|
|
83
|
+
|
|
84
|
+
- 项目知识属于项目自己;assistant desk 只持有 assistant 自己的身份、记忆、对话与运行资产。
|
|
85
|
+
- `SOUL.md`、`NOW.md`、`MEMORY.md`、`MISTAKES.md`、`journal/`、`conversations/` 是用户可见长期资产。
|
|
86
|
+
- assistant desk 的默认本地自治边界是 desk 根目录,而不只是 `.system/`;维护 `SOUL.md`、`NOW.md`、`MEMORY.md`、`MISTAKES.md`、`journal/`、`conversations/` 等长期资产不应被产品层误判成越界操作。
|
|
87
|
+
- `.system/archive/` 是稳定原材料层;`.system/runtime/`、`.system/logs/`、`.system/cache/`、`.system/runs/`、`.system/codex-home/` 属于实现层内部资产。
|
|
88
|
+
- 进入 desk Git 的必须是应被回滚和审计的长期资产;运行期脏文件不得进入版本库。
|
|
89
|
+
|
|
90
|
+
## 文档与产品判断口径
|
|
91
|
+
|
|
92
|
+
- 项目级设计、规划、实施说明与 onboarding 文档都沉淀在仓库内,不写入 assistant desk。
|
|
93
|
+
- 文档入口以 `README.md` 为准;产品负责人 / 项目负责人日常总览优先看根目录 `DASHBOARD.md`;产品同事入场优先看 `docs/product-onboarding.md`。
|
|
94
|
+
- 看设计文档时先区分 `docs/architecture/`、`docs/implementation/`、`docs/completed/`、`docs/planning/` 四层职责,不要混读成同一类文档。
|
|
95
|
+
- 历史文档若与现状冲突,优先以 `README.md`、本文件,以及相关文档开头声明的 shipped model 为准。
|
|
96
|
+
- 做产品判断时,先区分用户问题、系统根因和产品边界,再讨论实现方案。
|
|
97
|
+
- 默认要求中间层吃掉复杂性,不把端口、运行态细节、桥接实现等内部概念暴露给用户。
|
|
98
|
+
|
|
99
|
+
## 验证基线
|
|
100
|
+
|
|
101
|
+
发生 shell 或生命周期改动时,至少验证:
|
|
102
|
+
|
|
103
|
+
- `bash -n ally.sh`
|
|
104
|
+
- 相关 `internal/` shell 脚本语法
|
|
105
|
+
- 最小可用的 `tests/shell/assistant.sh`
|
|
106
|
+
- 必要时补 bridge 的 unit / integration 测试
|
|
107
|
+
- 若改动涉及 bridge 会话恢复语义,还必须验证一次“已有 session 在重启后收到普通消息仍可继续处理”的自动化路径或明确的人工闭环
|
|
108
|
+
- smoke `./ally.sh help`
|
|
109
|
+
|
|
110
|
+
如果环境限制导致某项无法验证,交付时必须明确写出缺口。
|
package/DASHBOARD.md
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# Dashboard
|
|
2
|
+
|
|
3
|
+
更新时间:2026-03-22
|
|
4
|
+
维护人:Ally
|
|
5
|
+
定位:产品负责人 / 项目负责人的轻量驾驶舱,不替代 `PRODUCT.md`、`README.md` 或各专题 SPEC。
|
|
6
|
+
|
|
7
|
+
## 1. 怎么用
|
|
8
|
+
|
|
9
|
+
这份文档只做 5 件事:
|
|
10
|
+
|
|
11
|
+
1. 一眼看清当前产品现状
|
|
12
|
+
2. 一眼看清哪些主线正在推进
|
|
13
|
+
3. 一眼看清哪些事项已准备好、可派工认领
|
|
14
|
+
4. 一眼看清还有哪些想法仍在整理
|
|
15
|
+
5. 保留已完成事项的简短账本,方便回顾但不挤占主视野
|
|
16
|
+
|
|
17
|
+
使用纪律:
|
|
18
|
+
|
|
19
|
+
- `PRODUCT.md` 负责长期总纲,不写高频变动状态
|
|
20
|
+
- `README.md` 负责当前 shipped model 与工程入口,不写产品排期看板
|
|
21
|
+
- `TASK.md` 负责某一条正在施工的工程专题
|
|
22
|
+
- `DASHBOARD.md` 负责项目级总览、主线状态与待认领队列
|
|
23
|
+
|
|
24
|
+
## 2. 当前现状
|
|
25
|
+
|
|
26
|
+
当前 `work-ally` 已进入“v1 主闭环已成立,开始继续产品化”的阶段。
|
|
27
|
+
|
|
28
|
+
已成立的稳定基线:
|
|
29
|
+
|
|
30
|
+
- assistant desk / 独立 `CODEX_HOME` / 项目绑定 / 作用域命令
|
|
31
|
+
- Feishu 私聊主闭环、群聊最小显式触发、reply context、sender identity
|
|
32
|
+
- official Codex runtime 接入、thread 续聊、`/new`、审批、停止、恢复
|
|
33
|
+
- same-machine handoff 主合同
|
|
34
|
+
- archive raw layer、conversation view layer、nightly memory digest
|
|
35
|
+
- 审批自治边界、会话降噪与忙时输入门控、中间层异常透明化
|
|
36
|
+
|
|
37
|
+
当前一句话判断:
|
|
38
|
+
|
|
39
|
+
> 产品已经不是“从 0 到 1”,而是“有稳定主链路后,继续收口边界、降低门槛、补齐长期协作能力”。
|
|
40
|
+
|
|
41
|
+
## 3. 进行中
|
|
42
|
+
|
|
43
|
+
这些是当前已经进入施工、但尚未进入“等验收”阶段的主线。
|
|
44
|
+
|
|
45
|
+
当前暂无需要继续施工的大型 bridge-core 或桌面包装入口主线。
|
|
46
|
+
|
|
47
|
+
- 当前优先:继续收口 memory / archive 合同
|
|
48
|
+
- 当前要求:后续 bridge 改动应继续遵守本轮已收口的薄边界,不再回长厚状态
|
|
49
|
+
|
|
50
|
+
## 4. 待开发
|
|
51
|
+
|
|
52
|
+
说明:当前已开工的事项不应同时留在本节。
|
|
53
|
+
|
|
54
|
+
这些事项已经具备明确方向,适合后续派工或由程序员认领。
|
|
55
|
+
|
|
56
|
+
认领规则:
|
|
57
|
+
|
|
58
|
+
- 只有进入本节的事项,才视为“可派工 / 可认领”
|
|
59
|
+
- 认领后,应补对应 spec / implementation doc / `TASK.md`,并把状态移入“进行中”
|
|
60
|
+
- 未进入本节的想法,不应直接让程序员开工
|
|
61
|
+
|
|
62
|
+
### A. memory system 合同收口
|
|
63
|
+
|
|
64
|
+
- 状态:`Ready to refine`
|
|
65
|
+
- 主输入:`docs/planning/FEATURE-memory-system.md`
|
|
66
|
+
- 当前重点:注入合同、纠错合同、删除/更正语义、文件职责边界
|
|
67
|
+
|
|
68
|
+
### B. stable archive contract 收口
|
|
69
|
+
|
|
70
|
+
- 状态:`Ready to cleanup`
|
|
71
|
+
- 主输入:`docs/planning/SPEC-stable-archive-contract.md`
|
|
72
|
+
- 当前重点:把已落地主结构和真正稳定字段合同核对清楚
|
|
73
|
+
|
|
74
|
+
## 5. 待验收
|
|
75
|
+
|
|
76
|
+
这些事项不是待开发,而是已经部分完成或已完成实现,当前缺最后一段产品验收或真实使用确认。
|
|
77
|
+
|
|
78
|
+
### A. Assistant rename
|
|
79
|
+
|
|
80
|
+
- 状态:`Ready for acceptance`
|
|
81
|
+
- 主文档:`docs/planning/SPEC-assistant-rename.md`
|
|
82
|
+
- 当前情况:CLI `assistant rename <old> <new>`、主迁移路径、关键拒绝路径、README / QuickStart、shell tests 已落地并完成 clean-env 自测
|
|
83
|
+
- 当前缺口:还差你这边最后一轮产品验收与真实使用确认
|
|
84
|
+
|
|
85
|
+
### B. Feishu `merge_forward` 转发聊天提取
|
|
86
|
+
|
|
87
|
+
- 状态:`Waiting for real Feishu acceptance`
|
|
88
|
+
- 当前情况:自动化已覆盖正文提取与“这是转发聊天”语义带入
|
|
89
|
+
- 当前缺口:还差一次真人 Feishu 验收,确认真实转发消息路径表现符合预期
|
|
90
|
+
- 验收完成后:若结果正常,可从“部分落地”提升为已收口
|
|
91
|
+
|
|
92
|
+
## 6. 规划中
|
|
93
|
+
|
|
94
|
+
这些方向有明确价值,但还不适合直接进入施工。
|
|
95
|
+
|
|
96
|
+
### A. Skill-first 能力包边界
|
|
97
|
+
|
|
98
|
+
- 状态:`Ready to refine`
|
|
99
|
+
- 主输入:`docs/planning/SPEC-skill-first-capability-packaging.md`
|
|
100
|
+
- 当前判断:旧能力外迁先 hold;但后续新增 capability 默认先走 `skill-first` 判断,不再无边界长进中间层
|
|
101
|
+
|
|
102
|
+
### B. 会话恢复与状态合同进一步收口
|
|
103
|
+
|
|
104
|
+
- 主输入:`docs/planning/SPEC-runtime-connection-and-turn-recovery-semantics.md`
|
|
105
|
+
- 当前角色:为异常、恢复、迟到结果、状态真相提供进一步产品收口
|
|
106
|
+
|
|
107
|
+
### C. mode / reasoning depth
|
|
108
|
+
|
|
109
|
+
- 当前判断:值得做,但要后置于定时任务、会话接续、memory 合同之后
|
|
110
|
+
|
|
111
|
+
### D. reviewer / 汇报与把关
|
|
112
|
+
|
|
113
|
+
- 当前判断:属于第二层增强,不抢当前主线顺位
|
|
114
|
+
|
|
115
|
+
### E. 对外定时任务产品化
|
|
116
|
+
|
|
117
|
+
- 当前判断:先冻结,不进入近期主线
|
|
118
|
+
- 保留范围:只保留 `nightly memory digest` 这类产品内核级后台例行任务
|
|
119
|
+
- 暂不推进:面向普通用户的自然语言注册、定时派工、定时回送与相关交互面
|
|
120
|
+
|
|
121
|
+
## 7. 想法池
|
|
122
|
+
|
|
123
|
+
这些是用户会经常抛出的想法,先留在这里,不直接等于待开发。
|
|
124
|
+
|
|
125
|
+
- 对外技术客服型助理 / case-thread 协作模型
|
|
126
|
+
- reaction shortcuts 作为语义输入
|
|
127
|
+
- 更轻的产品负责人日常工作台与验收流
|
|
128
|
+
|
|
129
|
+
规则:
|
|
130
|
+
|
|
131
|
+
- 想法池里的内容,只有在问题定义、边界、验收标准收清后,才允许进入“待开发”
|
|
132
|
+
- 没立 spec 的,不视为可直接派工输入
|
|
133
|
+
|
|
134
|
+
## 8. 已完成
|
|
135
|
+
|
|
136
|
+
这里只保留高价值已完成项,不写流水账。
|
|
137
|
+
|
|
138
|
+
- assistant desk / 独立 `CODEX_HOME` / 项目绑定 / 作用域命令
|
|
139
|
+
- Feishu 私聊主闭环与群聊最小显式触发
|
|
140
|
+
- 项目群的强制 @ 单助理路由:已通过真人 Feishu 验收;同一 assistant 的私聊与群聊已确认进入独立 thread,并能正确回投到原 Feishu 会话
|
|
141
|
+
- Markdown-rich 回复、reply context、group sender identity
|
|
142
|
+
- 内核级 routine / scheduler / nightly memory digest
|
|
143
|
+
- 会话降噪与忙时输入门控
|
|
144
|
+
- 审批自治边界 / 自测默认授权
|
|
145
|
+
- 审批快捷回复与批量审批收口
|
|
146
|
+
- 中间层异常透明化
|
|
147
|
+
- same-machine handoff:已通过产品验收;真实 Codex runtime smoke 仍受当前环境网络请求失败影响,暂不记为“真实链路全绿”
|
|
148
|
+
- 极简桥梁语义与前台可见面收口:已完成实现、验证、文档回写与代码提交
|
|
149
|
+
- Active turn 默认 steer / context compaction 可见性:已完成实现与测试;默认 follow-up 继续走 `turn/steer`,并在观测到 compaction 时只提示一次轻量系统消息
|
|
150
|
+
- 忠实中间层核心瘦身重构 V2:已完成;普通自然语言主路径已彻底切掉 work-session ownership / attached session 依赖,`SessionMeta` / `TurnLedgerRecord` / `/status` surface 已删去一批厚状态字段,turn failure 路径也已单独收口,当前 `npm run test:bridge` 全绿
|
|
151
|
+
- CLI persona bootstrap 已删除:`ally setup` / `assistant add|ensure` 不再接受 `--persona` / `--persona-file`;人格编辑正式收口到手工编辑 `SOUL.md`
|
|
152
|
+
- 产品入口已收口为 CLI-only;桌面端线路已退场。
|
|
153
|
+
- 工程 SOP Skill 化:第一批工程维护 Skills 已落地,当前仓库内已有 `issue-to-spec-triage`、`post-implementation-closure`、`feishu-production-debug` 三个内部 Skill;基础纪律继续留在规则层
|
|
154
|
+
|
|
155
|
+
## 9. 当前提醒
|
|
156
|
+
|
|
157
|
+
- 不再维护厚重 workbench;以后以这份 dashboard 作为轻量总览入口
|
|
158
|
+
- 新增 capability 若可做成 Skill 包,默认不要先改 bridge core;先判断它是不是更适合外挂能力
|
|
159
|
+
- 任何已开工专题,都必须同步状态到这里,避免“人已经在做,文档还写 Ready to start”
|
|
160
|
+
- 任何准备派工的事项,都应先进入“待开发”,而不是散落在聊天记录里
|
package/PRODUCT.md
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# work-ally
|
|
2
|
+
|
|
3
|
+
`work-ally` 是一个把**项目工作现场**连接到**官方 Codex 能力**的协作中间层。
|
|
4
|
+
|
|
5
|
+
它的目标不是再造一个 AI 平台,而是解决真实项目里反复出现的协作断点:
|
|
6
|
+
你在电脑前能高效推进,离开工位就断线;角色很多,但上下文散;执行能力很强,但项目推进仍然靠人肉转述和手工追状态。
|
|
7
|
+
|
|
8
|
+
## 我们最初要解决的痛点
|
|
9
|
+
|
|
10
|
+
如果只看模型能力,今天的问题已经不是“AI 会不会写代码”。
|
|
11
|
+
真正卡住项目推进的,通常是下面这几件事:
|
|
12
|
+
|
|
13
|
+
1. 工作入口割裂:电脑前一套、移动端一套,切换场景就要重讲上下文。
|
|
14
|
+
2. 角色协作割裂:产品、开发、review 的对话和产物分散在不同窗口,责任链不连续。
|
|
15
|
+
3. 资产归属割裂:项目知识、助理记忆、运行状态混在一起,长期维护越来越混乱。
|
|
16
|
+
4. 执行与治理割裂:审批、恢复、回送、留痕都存在,但缺少统一协作层把它们稳稳接起来。
|
|
17
|
+
|
|
18
|
+
`work-ally` 的意义在这里:
|
|
19
|
+
它不是增加一个聊天入口,而是把“项目如何持续推进”这件事,从临时会话提升为可持续的工作系统。
|
|
20
|
+
|
|
21
|
+
## 我们的核心判断
|
|
22
|
+
|
|
23
|
+
我们坚持三个判断,不在这里妥协:
|
|
24
|
+
|
|
25
|
+
- 项目目录是工作现场,不是助理的家。
|
|
26
|
+
- 官方 Codex 是执行内核,我们不再造第二个脑子。
|
|
27
|
+
- 中间层只补协作缝隙,不制造新的复杂系统。
|
|
28
|
+
|
|
29
|
+
这也是为什么 `work-ally` 的边界一直在收紧:
|
|
30
|
+
桥接、最小编排、审批与 user-input gate、结果回送、必要补偿;仅此而已。
|
|
31
|
+
|
|
32
|
+
## 为什么基于 Codex,而不是自建或拼装另一套 Agent 内核
|
|
33
|
+
|
|
34
|
+
这个选择不是品牌偏好,而是工程判断:业界公开评测已经反复说明,Agent 的工程效果不仅由底层模型决定,也强烈受执行 harness、工具调用协议和交互机制影响;例如 SWE-bench Verified 明确区分了统一最小 loop(bash-only)与完整系统榜单,EVMbench 也展示了同一模型在不同 harness 下表现会变化。对 `work-ally` 来说,我们需要的是稳定的工程执行协议(thread/turn/item、审批暂停与恢复)和长期可维护的薄中间层边界,而 Codex App Server 正好提供了这套能力,所以我们选择“复用已验证内核 + 保持桥接层克制”,而不是再造一套执行系统。
|
|
35
|
+
|
|
36
|
+
公开依据(可查):SWE-bench Verified(https://www.swebench.com/verified.html)、EVMbench(https://cdn.openai.com/evmbench/evmbench.pdf)、Codex System Card(https://cdn.openai.com/pdf/8df7697b-c1b2-4222-be00-1fd3298f351d/codex_system_card.pdf)、OpenAI App Server 架构文档(https://openai.com/index/unlocking-the-codex-harness/)。
|
|
37
|
+
|
|
38
|
+
## 关于“Assistant Desk 是不是强加概念”
|
|
39
|
+
|
|
40
|
+
这是必须直面的拷问。
|
|
41
|
+
|
|
42
|
+
我们并不是先造了 `Assistant Desk`,再反过来证明它有意义。
|
|
43
|
+
相反,我们先面对一个第一性问题:
|
|
44
|
+
|
|
45
|
+
> 项目资产和助理资产,到底要不要有清晰边界?
|
|
46
|
+
|
|
47
|
+
如果不要边界,最简单的做法是在项目里放一个隐藏目录。
|
|
48
|
+
短期确实能跑,但长期会稳定出现三个后果:
|
|
49
|
+
|
|
50
|
+
1. 助理长期资产被项目生命周期绑死,迁移、复用、审计都变重。
|
|
51
|
+
2. 运行态脏数据更容易污染项目仓库,协作噪声持续累积。
|
|
52
|
+
3. 中间层为了兜这些混杂问题,会逐步长成“第二套任务系统”。
|
|
53
|
+
|
|
54
|
+
`Assistant Desk` 解决的不是命名问题,也不是目录美观问题,而是资产边界问题:
|
|
55
|
+
|
|
56
|
+
- 项目资产归项目(代码、文档、规则、SPEC)。
|
|
57
|
+
- 助理资产归助理(身份、风格、记忆、对话、运行态)。
|
|
58
|
+
- 中间层只负责把两者与官方能力接好,而不是吞掉两者。
|
|
59
|
+
|
|
60
|
+
所以结论不是“这个概念听起来高级,所以保留”,而是:
|
|
61
|
+
|
|
62
|
+
> 当产品目标是长期协作而不是一次性会话时,`Assistant Desk` 是最小必要结构,不是概念包装。
|
|
63
|
+
|
|
64
|
+
## 产品结构(用户视角)
|
|
65
|
+
|
|
66
|
+
从用户视角,`work-ally` 可以理解为四层:
|
|
67
|
+
|
|
68
|
+
1. 项目工作现场:代码、文档、规则、任务产物。
|
|
69
|
+
2. 助理办公桌:助理自己的长期资产和运行边界。
|
|
70
|
+
3. `work-ally`:负责桥接、编排、审批与回送。
|
|
71
|
+
4. 官方 Codex:负责推理、执行、线程与工具能力。
|
|
72
|
+
|
|
73
|
+
你不需要理解底层实现细节;你只需要得到一个结果:
|
|
74
|
+
无论在电脑前还是远程入口,面对的都是同一个项目连续工作流,而不是一堆彼此割裂的会话。
|
|
75
|
+
|
|
76
|
+
## 它最适合什么场景
|
|
77
|
+
|
|
78
|
+
`work-ally` 在以下场景价值最高:
|
|
79
|
+
|
|
80
|
+
- 你不可能一直守在电脑前,但项目必须持续推进。
|
|
81
|
+
- 你需要稳定的多角色协作,而不是临时聊天堆叠。
|
|
82
|
+
- 你需要明确的审批边界、结果回送和可追溯留痕。
|
|
83
|
+
- 你希望复用官方 Codex 能力,同时保持项目协作秩序。
|
|
84
|
+
|
|
85
|
+
## 它不打算做什么
|
|
86
|
+
|
|
87
|
+
`work-ally` 不做这些事:
|
|
88
|
+
|
|
89
|
+
- 不替代官方 Codex 产品本身。
|
|
90
|
+
- 不做重型多 Agent 平台。
|
|
91
|
+
- 不在中间层重建一套会话脑、任务脑、状态机平台。
|
|
92
|
+
- 不为了“看起来完整”而持续加厚核心。
|
|
93
|
+
|
|
94
|
+
另外,当前有一条明确的用户承诺:
|
|
95
|
+
|
|
96
|
+
> `work-ally` 暂不支持用户侧“定时任务”能力。
|
|
97
|
+
|
|
98
|
+
也就是说,默认不会在你不触发时自行发起一轮任务执行;
|
|
99
|
+
除非你主动发起交互,否则不会在后台持续跑任务、消耗执行资源。
|
|
100
|
+
|
|
101
|
+
## 最后一条产品原则
|
|
102
|
+
|
|
103
|
+
所有工具都该先回答“痛点是什么”,再回答“功能是什么”。
|
|
104
|
+
|
|
105
|
+
`work-ally` 的产品原则始终不变:
|
|
106
|
+
|
|
107
|
+
> 先解决真实协作痛点,再设计最小必要结构;
|
|
108
|
+
> 先守住边界,再扩能力;
|
|
109
|
+
> 能复用官方能力的,绝不在中间层重造一套。
|
|
110
|
+
|
|
111
|
+
一句话总结:
|
|
112
|
+
|
|
113
|
+
`work-ally` 不是为了引入概念而存在,而是为了让项目协作在真实世界里持续、清晰、可控地向前推进。
|